package cn.scu.ne04jdemo.service.imp;

import cn.hutool.core.util.ObjectUtil;
import cn.scu.ne04jdemo.dao.ScheOrderInfoMapper;
import cn.scu.ne04jdemo.dao.ScheOrderTaskInfoMapper;
import cn.scu.ne04jdemo.dao.ScheProdTaskInfoMapper;
import cn.scu.ne04jdemo.entitiy.ScheOrderInfoEntity;
import cn.scu.ne04jdemo.entitiy.ScheOrderTaskInfoEntity;
import cn.scu.ne04jdemo.entitiy.ScheProdTaskInfoEntity;
import cn.scu.ne04jdemo.service.ScheOrderInfoService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ScheOrderInfoServiceImpl extends ServiceImpl<ScheOrderInfoMapper, ScheOrderInfoEntity> implements ScheOrderInfoService {

    @Autowired
    private ScheOrderInfoMapper scheOrderInfoMapper;

    @Autowired
    private ScheProdTaskInfoMapper scheProdTaskInfoMapper;

    @Autowired
    private ScheOrderTaskInfoMapper scheOrderTaskInfoMapper;

    @Override
    public Boolean insert(ScheOrderInfoEntity scheOrderInfoEntity) {
        /**
         * 1.增加订单信息
         */
        this.scheOrderInfoMapper.insert(scheOrderInfoEntity);
        /**
         * 2.增加订单任务
         */
        List<ScheProdTaskInfoEntity> scheProdTaskInfoEntityList = this.scheProdTaskInfoMapper.selectList(new QueryWrapper<ScheProdTaskInfoEntity>().eq("prod_type_id", scheOrderInfoEntity.getProdType()));
        if (ObjectUtil.isNotNull(scheProdTaskInfoEntityList) && scheProdTaskInfoEntityList.size() > 0) {
            for (ScheProdTaskInfoEntity scheProdTaskInfoEntity : scheProdTaskInfoEntityList) {
                ScheOrderTaskInfoEntity scheOrderTaskInfoEntity = new ScheOrderTaskInfoEntity();
                scheOrderTaskInfoEntity.setOrderId(scheOrderInfoEntity.getId());
                scheOrderTaskInfoEntity.setProdTaskId(scheProdTaskInfoEntity.getId());
                scheOrderTaskInfoEntity.setTaskName(scheProdTaskInfoEntity.getTaskName());
                scheOrderTaskInfoEntity.setTaskLevel(scheProdTaskInfoEntity.getTaskLevel());
                scheOrderTaskInfoEntity.setProdNum(scheProdTaskInfoEntity.getUnitProdNum() * scheOrderInfoEntity.getProdNum());
                scheOrderTaskInfoEntity.setTaskState("01");
                this.scheOrderTaskInfoMapper.insert(scheOrderTaskInfoEntity);
            }
        }

        return true;
    }
}
